/* 
    该文件是对axios进行二次封装，封装的目的有：
        1.给所有ajax请求都加上进度条效果
        2.所有axios发出去的请求都能返回真正的数据，即：不用在response.data了
        3.所有的请求，统一路径，不用再一遍一遍的编写固定的路径了
        .....以后还会实现别的，但目前就这么多
*/
import axios from 'axios'
import 'nprogress/nprogress.css'
import NProgress from 'nprogress'

//创建一个新的axios实例（以后用mAjax专门用于给模拟的接口发请求）
const mAjax = axios.create({
    baseURL: '/mock', //请求基本路径
    timeout: 5000, //超时时间
})

//axios的请求拦截器
mAjax.interceptors.request.use((config) => {
    //进度条开始走
    NProgress.start()
        //将请求配置对象交出去
    return config
})

//axios的响应拦截器
mAjax.interceptors.response.use(
    (response) => {
        //进度条停下来
        NProgress.done()
            //返回真正的数据
        return response.data
    },
    (error) => {
        //统一提示错误
        alert(error)
            //进度条停下来
        NProgress.done()
            // return Promise.reject(error) //可以返回具体错误信息
        return new Promise(() => {}) //也可以中断Promise链，让一切停下来
    }
)

export default mAjax